#ifndef TH_FUNCTIONS_H
#define TH_FUNCTIONS_H

#include <string>
#include <vector>
#include <cctype>
#include <algorithm>

#ifdef _WIN32

#else
#include <sys/sysinfo.h>
#endif
namespace tool_th{
/*
 *输入一个字符串,以及分割字符,返回存储结果的vector
*/
std::vector<std::string> splitBy(std::string str_ipports ,std::string separator = ":");
/*
 *输入url ,返回用户名, 密码, 主机名,端口号,访问路径,是否是https连接
 *对于正确的url会返回正确的结果,对于明显不正确的url,不保证结果的正确性
 *eg: url:http://aaa.com:80/index/start.php -> host:aaa.com port:80 path:/index/start/php is_https:false
*/
bool parseURL(const std::string &url,std::string &user,std::string &pass,std::string &host,std::string &port,std::string &path,bool &is_https);
/*
 *将所有字母变成大写
*/
void upper(std::string &s);
/*
 *将所有字母变成小写
*/
void lower(std::string &s);

/*
 *using gemo's code from http://blog.csdn.net/gemo/article/details/8468311 
 *urlEncode
*/
unsigned char toHex(unsigned char x,bool upper = true);
unsigned char fromHex(unsigned char x);

std::string urlEncode(const std::string& str,const std::string &extra_unconv_chars = "", bool upper = true);
std::string urlDecode(const std::string& str);

/*
 *输入utc时间
 *返回当地时区时间的字符串表示
*/
std::string format_time(std::time_t utc_time);

/*
 *获取cpu的总的线程数,包括超线程
 */
int cpu_thread_num();
}
#endif//TH_FUNCTIONS_H